Web resourceから別のWeb resourceに対する操作
以下の3つに大別される
reads
writes
embeds
Same-Origin、Cross-Originでの挙動の差異
CORSを適用する前後での挙動の差異
を見るとわかりやすいmrsekut.icon
tl;dr
table:_
Same-Origin (SOPあり) Cross-Origin (SOPあり) Cross-Origin & CORS
writesのsimple req 制限しない 制限しない →元からできるので関係ない
embeds 制限しない 制限しない →元からできるので関係ない
「Cross-Origin (SOPあり)」の列が
writesのsimple reqのCross-Originの部分が「制限しない」になっているので、
readsのnot simple reqに??を付けているのは、writesの話とごっちゃになっている可能性があるからmrsekut.icon
writeを抜きにして、readを調べる方法がわからない
また、cross-originのiframeの内容をwindow経由で見ることはできない
reads
resourceの読み込みを指す
SOPが適用されるため、Cross Originなresourceにはアクセスできない
例えば、
fetch API経由でresponseを受け取る
windowを経由したDOM操作
例えば、iframeで読み込まれているものをwindow.contentDocumentで読む
iframeの方はいずれにしろ無理
writes
networkを経由した書き込み
requestを送ることはできるが、responseを読むことはできない
resuponseはCross-Origin readsに該当するため
SOPは、Simple Request以外の時にのみ適用される
Simple Request以外のときは、Cross Originにrequestを送れない
Simple Requestの場合はSOPの有無に関わらず送ることができる
例えば、Simple Requestでの例
<a>などのリンク
リダイレクト
<form>の送信
Fetch APIによるrequestの発行
例えば、Simple Request以外での例
Fetch APIによる(Simple Requstの条件を満たしていない)requestの発行
embeds
つまり、defaultで許可されている
だから、SOPの有無や、CORSの有無を考える際にembedsは考慮しないで良いmrsekut.icon
例えば
<script>で、scriptを読み込む
<link>で、CSSを読み込む
<img>で、画像が表示
<video>や<audio>でmedia fileを再生
<object>や<embed>での埋め込み
<iframe>での埋め込み
参考